package Modelo;
import bean.Conexion;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class JugadorDAO extends ConexionDAO {


	

	public JugadorDAO() {
		super();
	
	}	
		

	public boolean registrarJugador(Jugador jugador) {
		if (jugador.getTiempo() < MejorTiempo(jugador.getNivel()))
		{
			String tiraSQL = "INSERT INTO Jugador "+
			"(nombre, nivel, puntaje,tiempo) "+
			"VALUES ("+
			"'"+jugador.getNombre()+"', '"+jugador.getNivel()+
			"','"+jugador.getPuntaje()+"',"+jugador.getTiempo()+" )";
			Conexion.ejecutar(tiraSQL);
			return true;
		}
		return false;
	}
	
	
	public double MejorTiempo(String nivel){
		double tiempo;
		String tiraSQL = "SELECT MAX(tiempo) as mejor FROM " +
				"(SELECT  tiempo FROM Jugador where nivel='" + nivel + "'" +
				"ORDER BY tiempo ASC LIMIT 5) AS LISTA";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		try {
			resultSet.next();
			tiempo = resultSet.getDouble("mejor");
		} catch (SQLException e) {
			e.printStackTrace();
			tiempo = (Double) null;
		}
		return tiempo;
	}
	
	public static List<Jugador> ListaBasico() {
		List<Jugador> jugador = new ArrayList<Jugador>();
		String tiraSQL = "SELECT  * FROM Jugador where nivel='Basico' ORDER BY tiempo ASC LIMIT 5";
 
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String nombre = resultSet.getString("nombre");
				float puntaje = resultSet.getFloat("puntaje");
				double tiempo   = resultSet.getDouble("tiempo");
				String nivel   = resultSet.getString("nivel");
				Jugador jugadores = new Jugador(nombre, puntaje, tiempo, nivel);
				jugador.add(jugadores);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return jugador;
	}

	
	
	public static List<Jugador> ListaIntermedio() {
		List<Jugador> jugador = new ArrayList<Jugador>();
		String tiraSQL = "SELECT  * FROM Jugador where nivel='Intermedio' ORDER BY tiempo ASC LIMIT 5";
 
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String nombre = resultSet.getString("nombre");
				float puntaje = resultSet.getFloat("puntaje");
				double tiempo   = resultSet.getDouble("tiempo");
				String nivel   = resultSet.getString("nivel");
				Jugador jugadores = new Jugador(nombre, puntaje, tiempo, nivel);
				jugador.add(jugadores);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return jugador;
	}
    
	public static List<Jugador> ListaAvanzado() {
		List<Jugador> jugador = new ArrayList<Jugador>();
		String tiraSQL = "SELECT  * FROM Jugador where nivel='Avanzado' ORDER BY tiempo ASC LIMIT 5";
 
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String nombre = resultSet.getString("nombre");
				float puntaje = resultSet.getFloat("puntaje");
				double tiempo   = resultSet.getDouble("tiempo");
				String nivel   = resultSet.getString("nivel");
				Jugador jugadores = new Jugador(nombre, puntaje, tiempo, nivel);
				jugador.add(jugadores);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return jugador;
	}


}
